import createRouteMap from './create-route-map.js';
import { createRoute } from './history/base.js';

export default function createMatcher (routes) {
    // 扁平化用户传入的数据   创建路由映射表
    // pathList: ['/about', '/about/a'] 存储所有的路由路径即path
    // pathMap: {'/': 记录, '/about': 记录, '/about/a': 记录, '/about/b': 记录}   给每个路径path记录对应的recode信息
    let { pathList, pathMap } = createRouteMap(routes); // 初始化配置


    // 动态添加路由的方法
    function addRoutes () {
        createRouteMap(routes, pathList, pathMap);
    }
    
    // 用来匹配方法
    function match (location) {
        // 找到当前的记录
        // 1, 需要找到对应的记录，并且根据记录生成一个匹配数组 如： /about/a ====> ['/about', '/about/a']
        let record = pathMap[location];
        let local = { path: location };
        if (record) { // 找到了记录
            return createRoute(record, local);
        }
        return createRoute(null, local);
    }
    
    return {
        match,
        addRoutes
    }
};
